package com.szml.user.service;

import com.szml.user.result.PageResult;
import com.szml.user.result.Result;
import com.szml.user.dto.*;
import com.szml.user.vo.ResetPasswordVO;
import com.szml.user.vo.UserInfoVO;
import com.szml.user.vo.UserUpdateVO;

import javax.servlet.http.HttpServletRequest;

/**
 * @Author limin
 * @date 2025-06-19 11:44
 * @description
 */
public interface UserService {
    /**
     * 用户注册
     * @param userRegisterDTO
     * @return
     */
    Result<String> register(UserRegisterDTO userRegisterDTO, HttpServletRequest request);

    /**
     * 用户登录
     * @param userLoginDTO
     * @return
     */
    Result<String> login(UserLoginDTO userLoginDTO,HttpServletRequest request);

    /**
     * 分页展示用户信息
     * @param userPageQueryDTO
     * @param token
     * @return
     */
    PageResult userList(UserPageQueryDTO userPageQueryDTO, String token);

    /**
     * 查询用户信息
     * 普通用户仅自己，管理员所有普通用户，超管全部
     * @param userId
     * @return
     */
    Result<UserInfoVO> getUserInfo(Long userId, String token);

    /**
     * 根据userId修改用户信息
     * @param userId
     * @param userUpdateDTO
     * @param token
     */
    Result<UserUpdateVO> updateUserInfo(Long userId, UserUpdateDTO userUpdateDTO, String token,HttpServletRequest request);

    /**
     * 重置密码（分权）
     * @param resetPasswordDTO
     * @param token
     * @return
     */
    Result<ResetPasswordVO> resetPassword(ResetPasswordDTO resetPasswordDTO, String token,HttpServletRequest request);
}
